package com.leo.offer;

/**
 * 输入数字n，按顺序打印出从1到最大的n位十进制数，
 比如输入3，则打印出1,2,3...一直到最大的3位数，即999；
 * @author xuexiaolei
 * @version 2018年03月01日
 */
public class T12 {
    public static void printDigit(int n){
        char[] d = new char[n];
        printDigit01(n, d, 0);
    }

    private static void printDigit01(int n, char[] d, int t){
        if (t==n){
//            System.out.println(String.valueOf(d));//无法解决前导零输出问题
            printCharWhitout0(d);
        }else {
            for (int i = 0; i < 10; i++) {
                d[t] = (char) (i+'0');
                printDigit01(n, d, t+1);
            }
        }
    }

    private static void printCharWhitout0(char[] d) {
        boolean isPrint = false;
        for (int i = 0; i < d.length ; i++) {
            if (isPrint){
                System.out.print(d[i]);
            }else {
                if (d[i]!='0'){ isPrint=true; System.out.print(d[i]);}
            }
        }
        if (isPrint) { System.out.println(); }
    }

    public static void main(String[] args) {
        printDigit(2);
    }
}
